Lettura stringa al contrario

di il
11 risposte

Lettura stringa al contrario

Salve a tutti, devo fare un programma in c che stampi i caratteri si una stringa al contrario, per esempio se inserisco "mario" deve ridarmi" oiram" , ecco la mia bozza:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define DIM 10

main()
{
int x;
char stringa[DIM];

printf("inserisci il nome :");
scanf("%s",stringa);

for(x=DIM;x>strlen(stringa);x--)
printf("nome al contrario:%s\n",stringa);
system("PAUSE");
return 0;
}

non capisco dove sbaglio, ho detto al ciclo che deve partire dall ultimo carattere e contare fino all ultimo per poi stampare e mi sa che c è proprio li l errore, qualcuno mi puo aiutare ? grazie

11 Risposte

  • Re: Lettura stringa al contrario

    Gli array in C sono 0-indexed, il che significa che il primo elemento dell'array ha indice 0. Dunque, se un array ha N elementi, gli indici andranno da 0 a N-1. Attenzione a come inizializzi la variabile nel ciclo.
    Inoltre, anche la condizione è sbagliata.. se decrementi di uno la x ad ogni passo, devi fermarti nel momento in cui la x è minore di zero!
    Ultima cosa, in quel modo stamperesti la stringa N volte.. stampa un carattere alla volta.

    P.s.: per postare codice sul forum, utilizza gli appositi tag code.
  • Re: Lettura stringa al contrario

    tuixte ha scritto:


    Gli array in C sono 0-indexed, il che significa che il primo elemento dell'array ha indice 0. Dunque, se un array ha N elementi, gli indici andranno da 0 a N-1. Attenzione a come inizializzi la variabile nel ciclo.
    Inoltre, anche la condizione è sbagliata.. se decrementi di uno la x ad ogni passo, devi fermarti nel momento in cui la x è minore di zero!
    Ultima cosa, in quel modo stamperesti la stringa N volte.. stampa un carattere alla volta.

    P.s.: per postare codice sul forum, utilizza gli appositi tag code.

    ho cercato di cambiare come hai detto piu o meno ma non funziona:
    for(x=DIM-1;x<0;x--)
    printf("nome al contrario:%s\n",stringa[x]);

    non so che fare
  • Re: Lettura stringa al contrario

    Ma stai studiando dal libro?
    Il for viene eseguito solo quando la condizione è VERA. Il che significa che la condizione deve essere x >= 0.
    Nella printf metti solo stringa[x].. Il resto stampalo una sola volta prima del for, altrimenti lo ripeterai per ogni carattere.
  • Re: Lettura stringa al contrario

    tuixte ha scritto:


    Ma stai studiando dal libro?
    Il for viene eseguito solo quando la condizione è VERA. Il che significa che la condizione deve essere x >= 0.
    Nella printf metti solo stringa[x].. Il resto stampalo una sola volta prima del for, altrimenti lo ripeterai per ogni carattere.

    concettualmente ci sono , ho capito cosa vuoi dire , mi è venuta un altra idea in mente ma nulla anche qui:

    for(x=(strlen(stringa)-1);x>=0;x--)
    printf("nome al contrario:%s\n",stringa[x]);

    dico che deve partire dalla lunghezza massima della stringa -1 ( come hai detto anche te), poi dico che se x>=0 allora deve fare x-- e quindi ripetere il tutto , alla fine stampo il singolo facendo stringa[x]
  • Re: Lettura stringa al contrario

    Il fatto è che tu NON studi ... Scrivi solamente linee di codice senza approfondire il loro significato.
  • Re: Lettura stringa al contrario

    printf("nome al contrario:");
    for(int i=DIM-1; i >= 0; i--)
        printf("%c", stringa[i]);
  • Re: Lettura stringa al contrario

    tuixte ha scritto:


    printf("nome al contrario:");
    for(int i=DIM-1; i >= 0; i--)
        printf("%c", stringa[i]);


    c avevo pensato anche in quel modo prima che lo scrivessi qui, era stata la mia prima idea, ma non funziona lo stesso..ho iniziato da poco le stringhe e ho il prof che non spiega e da esercizi a caso, le cose me le devo studiare io da solo ore e ore, stessa cosa anche quando studiai i vettori, percio ho cercato di applicare le mie conoscenza di questi sulle stringhe...


    edit: ho messo "%c", e funziona, il prof mi ha detto di mettere "%s" pero...come vedi non sono io che non studio...se non sbaglio il %c si usava per i char, mentre il prof ha detto che bisognava utilizzare %s per tutte le stringhe
  • Re: Lettura stringa al contrario

    %s serve a stampare delle stringhe, %c singoli caratteri
  • Re: Lettura stringa al contrario

    tuixte ha scritto:


    %s serve a stampare delle stringhe, %c singoli caratteri

    eh , questo non me l ha detto il professore per esempio , le cose non posso inventarmele...grazie lo stesso e buona pasqua!
  • Re: Lettura stringa al contrario

    Assolutamente no, non puoi, ma puoi aprire il libro e trovare tutte le informazioni. L'importante è che hai risolto.
    Buona pasqua anche a te
  • Re: Lettura stringa al contrario

    tuixte ha scritto:


    Assolutamente no, non puoi, ma puoi aprire il libro e trovare tutte le informazioni. L'importante è che hai risolto.
    Buona pasqua anche a te
    si si ho risolto , anche con un metodo simile , usando la funzione strlen che calcola la lunghezza della stringa :

    for(x=(strlen(stringa)-1);x>=0;x--)
    printf("nome al contrario:%c\n",stringa[x]);

    grazie ancora ;D
Devi accedere o registrarti per scrivere nel forum
11 risposte