IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Création d'une spirale et modifications


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Création d'une spirale et modifications
    Bonjour,

    Pour un exercice nous avons du réaliser une spirale dans le terminal de n*n nombres. Pour que vous compreniez mieux voici un exemple avec 5:

    17 16 15 14 13
    18 5 4 3 12
    19 6 1 2 11
    20 7 8 9 10
    21 22 23 24 25

    J'ai trouvé comment faire sauf que, petit problème: la spirale ne tourne pas dans le bon sens! Pourriez vous m'aider afin d'obtenir le résultat si dessus.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include <stdio.h>
    #include <stdlib.h>
     
    int main (){
     
    	int n;
    	int x, y;
     
    	printf("\n");
    	printf("Choisissez une valeur (de 2 à 10 pour un meilleur résultat): ");
    	scanf("%d", &n);
    	printf("\n\n");
     
    	int coordinates[n][n]; 
    	/*Imaginez [n][n] comme coordonnées (n;n) == (x;y)
    	 *où (0;1)= déplacement de 1 vers le haut
    	 *où (1;0)= déplacement de 1 vers la droite
    	 *où (-1;0)= déplacement de 1 vers la gauche
    	 *où (0;-1)= déplacement de 1 vers le bas
    	 *Tous les cas possibles pour cet exo sont cités
    	 */
     
       for (x=0; x<n; x++){
    		for (y=0; y<n; y++){
     
    			if (x <= n/2){ 
    				if (y <= x) 
    					coordinates[x][y] = (n-y*2)*((n+1)-(y+1)*2) + 1 - (x-y); 
    				else if (y <= n-x) 
    					coordinates[x][y] = coordinates[x][y-1] + 1;
    				else 
    					coordinates[x][y] = (n-y*2)*((n+1)-(y+1)*2) + 1 - (y-x); 
     
    			}
     
    			else{
    				if (y < n-x) 
     					coordinates[x][y] = (n-y*2)*((n+1)-(y+1)*2) + 1 - (x-y);
    				else if (y < x)
    					coordinates[x][y] = coordinates[x][y-1] - 1;
    				else
    					coordinates[x][y] = (n-y*2)*((n+1)-(y+1)*2) + 1 - (y-x);
    			}
    			printf("%3d", coordinates[x][y]);
    		}
    		printf("\n");
    	}
    	return 0;
    }
    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Sans examiner ton code plus en détails, remplacer tous tes « coordinates[x][y] » par « coordinates[n-x-1][y] » ne suffirait-il pas à résoudre ton problème ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    En changeant tous les Coordinates je reviens au même résultat...
    Pouvez préciser quels "Coordinates" changer?

    Merci d'avance, bonne soirée.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    si tu changes tout, tu retombes sur tes pattes.
    Il faut faire cette modif' dans la boucle d'affichage ou de création des valeurs.

    J'ai vu ton code, et il te faudra donc diviser en 2 parties, une première qui crée uniquement les valeurs et une seconde qui les affiche uniquement.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour Bousk et Obsidian,

    J'ai (enfin) compris comment cela fonctionnait, et je vous en remercie. Mon code marche à présent comme désiré

    Maintenant que ceci est réglé, je me retourne vers vous pour d'éventuelles corrections (rendre le code plus court, programmation défensive nécessaire? ...)

    Encore merci à vous deux et bonne fin de journée,

    Benjamin.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [amc designer] création d'une base postgresql
    Par david42 dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 12/03/2004, 11h08
  2. Copier Coller une ligne d'une table avec modif ?
    Par nolan76 dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/03/2004, 16h34
  3. Création d'une base avec IbConsole
    Par Lucien dans le forum Outils
    Réponses: 3
    Dernier message: 02/03/2004, 18h34
  4. création d'une batabse .gdb
    Par jejestyle dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/02/2004, 00h29
  5. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo